package comprasdiretas.ejb;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.Resource;
import javax.ejb.Stateless;
import javax.sql.DataSource;

import comprasdiretas.entity.SaldoElementoEntity;

/**
 * Session Bean implementation class SaldoElementoDespesaController
 */
@Stateless
public class SaldoElementoDespesaController implements SaldoElementoDespesaControllerLocal {
	@Resource(name="jdbc/mySQLPool")
	private DataSource dataSource;
    /**
     * Default constructor. 
     */
    public SaldoElementoDespesaController() {
        // TODO Auto-generated constructor stub
    }

  	public List<SaldoElementoEntity> listarSaldosElementosDespesa() {
    	List<SaldoElementoEntity> listaSaldosElementosDespesa = new ArrayList<SaldoElementoEntity>();
    	
    	Connection con;
    	try {
    		con = dataSource.getConnection();
    		PreparedStatement ps = con.prepareStatement("SELECT ano,elementoDespesa,saldo FROM comprasdiretasdb.saldo_elemento s");
    		ResultSet rs = ps.executeQuery();
    		while (rs.next()) {
    			listaSaldosElementosDespesa.add(new SaldoElementoEntity(rs.getString("elementoDespesa"),rs.getString("ano"),rs.getBigDecimal("saldo")));
			}
			con.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
   
    	return listaSaldosElementosDespesa;
    }

   
	public List<SaldoElementoEntity> consultarSaldoElementoDespesa(String ano) {
    	if (ano==null||ano.isEmpty()||ano.equals("")) {
    		return listarSaldosElementosDespesa();
    	} else {
    		List<SaldoElementoEntity> listaSaldosElementosDespesa = new ArrayList<SaldoElementoEntity>();
    		Connection con;
        	try {
        		con = dataSource.getConnection();
        		PreparedStatement ps = con.prepareStatement("SELECT ano,elementoDespesa,saldo FROM comprasdiretasdb.saldo_elemento s where ano="+ano);
        		ResultSet rs = ps.executeQuery();
        		while (rs.next()) {
        			listaSaldosElementosDespesa.add(new SaldoElementoEntity(rs.getString("elementoDespesa"),rs.getString("ano"),rs.getBigDecimal("saldo")));
    			}
    			con.close();
    		} catch (SQLException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
 
    		return listaSaldosElementosDespesa;
    	}
    }

	
	public List<String> listarAnosSaldosElementosDespesa() {
		List<String> listaAnosSaldosElementosDespesa = new ArrayList<String>();
		Connection con;
    	try {
    		con = dataSource.getConnection();
    		PreparedStatement ps = con.prepareStatement("SELECT distinct year(p.data) as ano FROM comprasdiretasdb.pedido p");
    		ResultSet rs = ps.executeQuery();
    		while (rs.next()) {
    			listaAnosSaldosElementosDespesa.add(rs.getString("ano"));
			}
			con.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	
    	return listaAnosSaldosElementosDespesa;
	}

}
